#coding=utf-8
'''
# @Name:user
# @author:mysouil
# @Description:
# @DATE:2022/9/21 8:21
# @Modified By:
'''
from comment.models import db
from datetime import datetime
from werkzeug.security import generate_password_hash,check_password_hash

# 用户模型类
class User(db.Model):

    __tablename__ = 't_user'
    id = db.Column(db.Integer,primary_key=True,autoincrement=True)
    username = db.Column(db.String(30),unique=True,doc='用户名')
    # 存放加密之后的密码，采用flask提供的hash算法：生成128位的密文
    password = db.Column(db.String(128),doc='密码')
    email = db.Column(db.String(50),doc='邮箱')
    nick_name = db.Column(db.String(30),doc='昵称')
    phone = db.Column(db.String(11),doc='手机号')
    note = db.Column(db.String(50),doc='备注')
    icon = db.Column(db.String(255),doc='用户头像图片')
    
    login_time = db.Column(db.DateTime,default=datetime.now(),doc='登陆时间')
    create_time = db.Column(db.DateTime, default=datetime.now(), doc='用户注册的时间')
    update_time = db.Column(db.DateTime, default=datetime.now(),onupdate=datetime.now(), doc='修改时间')
    
    status = db.Column(db.Integer,doc='用户状态')  # 0:用户状态正常
    isDelete = db.Column(db.Boolean,default=False,doc='是否注销')
    
    # password的get方法
    @property
    def pwd(self):

        return self.password
    
    # password的set方法
    @pwd.setter
    def pwd(self,value):
        '''
        根据传过来的明文，转换成密文
        :param value:密码的明文
        :return:加密之后密文
        '''
        
        self.password = generate_password_hash(value)
      
    
    def check_password(self,value):
        '''
        验证密码
        :param value: 明文
        :return:
        '''
        return check_password_hash(self.password,value)